package functest

import (
	"fmt"
)

func Test() {
	fmt.Println("函数开始")
	s1 := test(func() int { return 100 }) // 直接将匿名函数当参数。
	s2 := format(func(s string, x, y int) string {
		return fmt.Sprintf(s, x, y)
	}, "%d, %d", 10, 20)
	s3, s4 := swap("aaa", "cc cc")

	fmt.Println(s1)
	fmt.Println(s2)
	fmt.Println(s3, s4)

}

// FormatFunc 定义函数类型。
type FormatFunc func(s string, x, y int) string

func format(fn FormatFunc, s string, x, y int) string {
	return fn(s, x, y)
}
func test(fn func() int) int {
	return fn()
}
func swap(x, y string) (string, string) {
	return y, x
}
